/**
 * 主应用程序
 */
class MainApp {
    constructor() {
        this.init();
    }

    init() {
        // 等待layui完全加载
        layui.use(['element', 'layer'], (element, layer) => {
            this.element = element;
            this.layer = layer;
            this.isMenuVisible = true; // 追踪菜单的可见状态
            this.setupNavigation();
            this.setupKeyboardShortcuts();
            this.setupWindowEvents();
            this.bindButtonEvents();
            this.showWelcomeMessage();
        });
    }

    // 绑定按钮事件
    bindButtonEvents() {
        // // 绑定测试连接按钮
        // document.getElementById('testConnectionBtn').addEventListener('click', () => {
        //     console.log('测试连接');
        //     const config = this.getConfig();
        //     if (!config || !config.name) {
        //         return;
        //     }
        //     window.SocketClient.loginRemote(config);

        // });
        // // 绑定加载目录按钮
        // document.getElementById('loadDirBtn').addEventListener('click', () => {
        //     console.log('加载目录');
        //     const config = this.getConfig();
        //     if (!config || !config.name) {
        //         return;
        //     }
        //     if (window.TreeManager) {
        //         window.TreeManager.loadTree();
        //     }
        //     if (window.DetailManager) {
        //         window.DetailManager.loadDirectory();
        //     }

        // });
        // 绑定抽屉按钮
        // document.getElementById('drawerBtn').addEventListener('click', (e) => {
        //     console.log('抽屉');
        //     if (window.DrawerManager) {
        //         window.DrawerManager.openDrawer();
        //     }
        // });

        // 绑定菜单展开按钮
        // document.getElementById('menuBtn').addEventListener('click', (e) => {
        //     // e.stopPropagation(); // 阻止事件冒泡
        //     console.log('菜单');
        //     const menu = document.querySelector('.header-nav ul');
            
        //     // 切换菜单的可见性
        //     if (this.isMenuVisible) {
        //         menu.style.display = 'none'; // 隐藏菜单
        //         this.isMenuVisible = false;
        //     } else {
        //         menu.style.display = 'block'; // 显示菜单
        //         this.isMenuVisible = true;
        //     }
        //     console.log('菜单');

        // });

        // // 点击其他地方隐藏菜单
        // document.addEventListener('click', (e) => {
        //     const menu = document.querySelector('.header-nav ul');
            
        //     if (this.isMenuVisible && !menu.contains(e.target) && !document.getElementById('menuBtn').contains(e.target)) {
        //         menu.style.display = 'none'; // 隐藏菜单
        //         this.isMenuVisible = false;
        //     }
        // });


    }


    // 在状态栏显示消息
    showStatusMessage(message, type = 'info') {
        const statusBar = document.getElementById('currentStatus');
        if (statusBar) {
            statusBar.textContent = message;
            statusBar.className = `currentStatus ${type}`;
        }
    }


    setupNavigation() {
        // 导航菜单点击事件
        this.element.on('nav()', (elem) => {
            const page = elem.attr('data-page');
            if (page) {
                this.navigateToPage(page);
            }
        });
    }

    setupKeyboardShortcuts() {
        document.addEventListener('keydown', (e) => {
            // // Ctrl + N: 新建文件
            // if (e.ctrlKey && e.key === 'n' && !e.shiftKey) {
            //     e.preventDefault();
            //     this.handleQuickAction('newFile');
            // }
            // // Ctrl + Shift + N: 新建文件夹
            // else if (e.ctrlKey && e.shiftKey && e.key === 'N') {
            //     e.preventDefault();
            //     this.handleQuickAction('newFolder');
            // }
            // // F5: 刷新目录
            // else if (e.key === 'F5') {
            //     e.preventDefault();
            //     if (window.TreeManager) {
            //         window.TreeManager.refreshTree();
            //     }
            // }
            // // Ctrl + S: 保存文件
            // else if (e.ctrlKey && e.key === 's') {
            //     e.preventDefault();
            //     this.saveFile();
            // }
            // // Delete: 删除选中项
            // else if (e.key === 'Delete') {
            //     e.preventDefault();
            //     this.handleQuickAction('delete');
            // }
        });
    }

    setupWindowEvents() {
        // 窗口大小变化处理
        window.addEventListener('resize', () => {
            this.handleWindowResize();
        });

        // 页面卸载前的处理
        window.addEventListener('beforeunload', (e) => {
            // TODO: 检查是否有未保存的更改
            // if (hasUnsavedChanges) {
            //     e.preventDefault();
            //     e.returnValue = '';
            // }
        });
    }

    // 页面导航
    navigateToPage(page) {
        console.log('导航到页面:', page);
        
        const pageActions = {
            'home': () => this.showHomePage(),
            'file-manager': () => this.showFileManager(),
            'settings': () => this.showSettings(),
            'about': () => this.showAbout()
        };

        if (pageActions[page]) {
            pageActions[page]();
        } else {
            this.layer.msg('导航到: ' + page);
        }
    }

    // 获取配置
    getConfig() {
        // const name = document.getElementById('hostName').value;
        // const host = document.getElementById('hostIP').value.trim();
        // const port = document.getElementById('hostPort').value.trim();
        // const username = document.getElementById('username').value;
        // const password = document.getElementById('password').value;
        // const remotePath = document.getElementById('remotePath').value.trim();
        // const maxDepth = document.getElementById('maxDepth').value.trim();
        // const config = {
        //     name,
        //     host,
        //     port,
        //     username,
        //     password,
        //     remotePath,
        //     maxDepth
        // };
        const config = window.DrawerManager.getCurrentConfig();
        
        if (!config.name || !config.host || !config.port || !config.username || !config.password || !config.remotePath) {
            // this.showError('请填写完整的服务器配置信息');
            this.layer.msg('请填写完整的服务器配置信息');
            return {};
        }
        return config;
    }

    // 显示首页
    showHomePage() {
        this.layer.msg('切换到首页');
        // TODO: 实现首页显示逻辑
    }

    // 显示文件管理器
    showFileManager() {
        this.layer.msg('当前已在文件管理器页面');
    }

    // 显示设置页面
    showSettings() {
        if (window.DrawerManager) {
            window.DrawerManager.openDrawer();
        }
    }

    // 显示关于页面
    showAbout() {
        this.layer.open({
            type: 1,
            title: '关于',
            area: ['400px', '300px'],
            content: `
                <div style="padding: 20px; text-align: center;">
                    <h3>文件管理系统</h3>
                    <p>版本: 1.0.0</p>
                    <p>╮(╯▽╰)╭</p>
                    <hr style="margin: 20px 0;">
                    <p style="font-size: 12px; color: #666;">
                        基于 Layui + Flask + Socket.IO + Paramiko 构建<br>
                        支持远程目录浏览、文件操作、文件编辑
                    </p>
                </div>
            `
        });
    }

    // 快速操作处理
    handleQuickAction(action) {
        const actions = {
            'newFile': () => this.createNewFile(),
            'newFolder': () => this.createNewFolder(), 
            'refresh': () => this.refreshDirectory(),
            'delete': () => this.deleteSelected()
        };

        if (actions[action]) {
            actions[action]();
        } else {
            this.layer.msg('执行操作: ' + action);
        }
    }

    // 创建新文件
    createNewFile() {
        this.layer.prompt({
            title: '新建文件',
            formType: 0,
            value: 'untitled.txt'
        }, (value, index) => {
            if (value.trim()) {
                // TODO: 实现创建文件逻辑
                this.layer.msg('创建文件: ' + value);
                this.layer.close(index);
            }
        });
    }

    // 创建新文件夹
    createNewFolder() {
        this.layer.prompt({
            title: '新建文件夹',
            formType: 0,
            value: 'New Folder'
        }, (value, index) => {
            if (value.trim()) {
                // TODO: 实现创建文件夹逻辑
                this.layer.msg('创建文件夹: ' + value);
                this.layer.close(index);
            }
        });
    }

    // 刷新目录
    refreshDirectory() {
        if (window.TreeManager) {
            window.TreeManager.refreshTree();
        } else {
            this.layer.msg('目录管理器未初始化');
        }
    }

    // 删除选中项
    deleteSelected() {
        this.layer.confirm('确定要删除选中的项目吗？', {
            icon: 3,
            title: '确认删除'
        }, (index) => {
            // TODO: 实现删除逻辑
            this.layer.msg('删除操作已执行');
            this.layer.close(index);
        });
    }

    // 保存文件
    saveFile() {
        const codeEditor = document.getElementById('codeEditor');
        const content = codeEditor.value;
        
        if (content.trim()) {
            // TODO: 实现保存文件逻辑
            this.layer.msg('文件已保存', {icon: 1});
        } else {
            this.layer.msg('文件内容为空', {icon: 2});
        }
    }

    // 处理窗口大小变化
    handleWindowResize() {
        // TODO: 处理布局调整
        console.log('窗口大小已改变');
        
        // 可以在这里添加响应式布局调整逻辑
        const leftPanel = document.querySelector('.left-panel');
        const rightPanel = document.querySelector('.right-panel');
        
        if (window.innerWidth < 768) {
            // 移动端布局调整
            if (leftPanel) leftPanel.style.width = '280px';
            if (rightPanel) rightPanel.style.width = '300px';
        }
    }

    // 显示欢迎信息
    showWelcomeMessage() {
        setTimeout(() => {
            this.layer.msg('Hi, man~', {icon: 6,time: 700});
        }, 100);
    }

    // 更新系统信息
    updateSystemInfo() {
        // TODO: 获取并更新真实的系统信息
        const elements = {
            connectionStatus: document.getElementById('connectionStatus'),
            currentHost: document.getElementById('currentHost'),
            currentPath: document.getElementById('currentPath'),
            treeDepth: document.getElementById('treeDepth')
        };

        // 示例数据更新
        if (elements.connectionStatus) {
            elements.connectionStatus.textContent = window.SocketClient?.isConnected ? '已连接' : '未连接';
        }
    }

    // 获取应用状态
    getAppState() {
        return {
            socketConnected: window.SocketClient?.isConnected || false,
            drawerOpen: window.DrawerManager?.isOpen || false,
            treeLoaded: window.TreeManager?.currentConfig !== null,
            currentPath: document.getElementById('currentPath')?.textContent || '/'
        };
    }
}



// 全局快速操作函数（供HTML直接调用）
window.handleQuickAction = function(action) {
    if (window.mainApp) {
        window.mainApp.handleQuickAction(action);
    }
};

window.saveFile = function() {
    if (window.mainApp) {
        window.mainApp.saveFile();
    }
};

// 获取全局配置 
window.getConfig = function() {
    return window.mainApp.getConfig();
}

// 展示状态栏消息
window.showStatusMessage = function(message, type) {
    if (window.mainApp) {
        window.mainApp.showStatusMessage(message, type);
    }
}


// 应用程序启动
document.addEventListener('DOMContentLoaded', function() {
    // 创建主应用实例
    window.mainApp = new MainApp();
    
    console.log('文件管理系统已启动');
});
